home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 676-700 / 699 / ezasm / mk.s < prev    next >
Text File  |  1995-03-18  |  2KB  |  204 lines

  1.  
  2. *    Make for EZAsm Version 1.7
  3.  
  4. *    Test for success by Lock() / Examine() on produced file
  5.  
  6. *    Support for include path:
  7.  
  8. *        Mk [-iPathToIncludes] file
  9.  
  10.  
  11. *    ( Minutes combined with Tics to prevent "wrap around" problems )
  12.  
  13.  
  14.  
  15. CLEAR_PUBLIC    equ    $10001
  16.  
  17.  
  18.     ARGS
  19.  
  20.  
  21. LONG    Buf Tbuf Nm
  22. LONG    FIB Cdays Flock Comb
  23. LONG    Fhandle Rbuf PtrSave
  24. BYTE    MkSw
  25.  
  26.  
  27.  
  28.     FIB = AllocMem( 260 #CLEAR_PUBLIC )    ;FIB buffer
  29.     beq    Quit
  30.  
  31.     Tbuf = AllocMem( 12 #CLEAR_PUBLIC )    ;DateStamp() buffer
  32.     beq    Quit
  33.  
  34.     Buf = AllocMem( 127 #CLEAR_PUBLIC )    ;Execute() buffer
  35.     beq    Quit
  36.  
  37. *   Get current time
  38.  
  39.     a0 = DateStamp( Tbuf )
  40.  
  41.     Cdays = (a0)    ;save Days
  42.  
  43.     d0 = 4(a0)    ;D0 = Minutes
  44.     swap    d0    ;Minutes to upper 2 bytes
  45.     d0 |= 8(a0)    ;combine Minutes with Tics
  46.  
  47.     Comb = d0    ;save for compare
  48.  
  49. *   Adjust CLI args for an include path..
  50.  
  51.     strrchr( Args $20 )
  52.     d0 != 0 {
  53.         d0 ++
  54.         Nm = d0
  55.     } else {
  56.         Nm = Args
  57.  
  58.         sprint( Buf "%s.mak" Nm )
  59.  
  60.         Fhandle = Open( Buf 1005 )
  61.         beq    Cont
  62.  
  63.         MkSw = 1
  64.  
  65.         Rbuf = AllocMem( 1000 #CLEAR_PUBLIC )        
  66.         beq    Quit
  67.  
  68.         PtrSave = d0
  69.  
  70.         Read( Fhandle d0 1000 ) 
  71.         bmi    Quit
  72.     }
  73.  
  74. Cont
  75.  
  76.  
  77.     Print( "--------------------\n" * )
  78.  
  79.     MkSw = 1 {
  80.         bsr    LoadNext
  81.     } else {
  82.         sprint( Buf "ezasm %s.s\n" Nm )
  83.     }
  84.  
  85.     Execute( Buf 0 OutHandle )
  86.  
  87.     Print( "--------------------\n" * )
  88.  
  89.     sprint( Buf "%s.asm" Nm )    ;name to Lock()
  90.     bsr    Check
  91.  
  92.     MkSw = 1 {
  93.         bsr    LoadNext
  94.     } else {
  95.         sprint( Buf "a68k %s.asm\n" Args )
  96.     }
  97.  
  98.     Execute( Buf 0 OutHandle )
  99.  
  100.     Print( "--------------------\n" * )
  101.  
  102.     sprint( Buf "%s.o" Nm )
  103.     bsr Check
  104.  
  105.     MkSw = 1 {
  106.         bsr    LoadNext
  107.     } else {
  108.         sprint( Buf "blink FROM %s.o LIB ez.lib TO %s\n" Nm Nm )
  109.     }
  110.  
  111.     Execute( Buf 0 OutHandle )
  112.  
  113.     jmp    Quit
  114.  
  115.  
  116.  
  117.  
  118. Check
  119.  
  120.  
  121.     Flock = Lock( Buf -2 )      
  122.     beq    Quit
  123.  
  124. *   It's here, but is it more recent than current values?
  125.  
  126.     Examine( d0 FIB )
  127.     beq    Quit
  128.  
  129.     a0 = FIB
  130.     d0 = 132(a0)        ;D0 = Days
  131.     d0 < Cdays  Quit
  132.  
  133.     d0 = 136(a0)        ;D0 = Minutes
  134.     swap    d0
  135.     d0 |= 140(a0)        ;combine with Tics
  136.  
  137.     d0 < Comb Quit
  138.  
  139.     UnLock( Flock )
  140.     Flock = 0
  141.  
  142.     rts
  143.  
  144.  
  145. *   Locate next line to Execute(), and load into Buf..
  146.  
  147. LoadNext
  148.  
  149.  
  150.     a0 = PtrSave
  151.  
  152. Again
  153.     isalpha( * ) {
  154.         a0 = PtrSave 
  155.         a1 = Buf
  156.  
  157. Nxt        (a1)+ = (a0)+ b
  158.         -1(a1) != $0a Nxt
  159.  
  160.         (a1) = 0 b
  161.         PtrSave = a0    ;( byte after $0a )
  162.  
  163.         rts
  164.     }
  165.  
  166.     a0 = PtrSave
  167. Inc    (a0)+ = $0a {
  168.         PtrSave = a0
  169.         jmp    Again
  170.     }
  171.     jmp    Inc
  172.  
  173.  
  174.  
  175. Quit
  176.  
  177.     Fhandle != 0 {
  178.         Close( Fhandle )
  179.     }
  180.  
  181.     Rbuf != 0 {
  182.         FreeMem( Rbuf 1000 )
  183.     }
  184.  
  185.     Flock != 0 {
  186.         UnLock( Flock )
  187.     }
  188.  
  189.     FIB != 0 {
  190.         FreeMem( FIB 260 )
  191.     }
  192.  
  193.     Tbuf != 0 {
  194.         FreeMem( Tbuf 12 )
  195.     }
  196.  
  197.     Buf != 0 {
  198.         FreeMem( Buf 127 )
  199.     }
  200.  
  201.  
  202.     END
  203.  
  204.